/**
 605. 种花问题
 假设有一个很长的花坛，一部分地块种植了花，另一部分却没有。可是，花不能种植在相邻的地块上，它们会争夺水源，两者都会死去。

 给你一个整数数组  flowerbed 表示花坛，由若干 0 和 1 组成，其中 0 表示没种植花，1 表示种植了花。另有一个数 n ，能否在不打破种植规则的情况下种入 n 朵花？能则返回 true ，不能则返回 false。

 示例 1：

 输入：flowerbed = [1,0,0,0,1], n = 1
 输出：true
 示例 2：

 输入：flowerbed = [1,0,0,0,1], n = 2
 输出：false


 提示：

 1 <= flowerbed.length <= 2 * 104
 flowerbed[i] 为 0 或 1
 flowerbed 中不存在相邻的两朵花
 0 <= n <= flowerbed.length
 */

/**
 * 思路：
 * 题目的意思可以转换成，是否存在 n个 不相邻的0 可以转换 成1，使得当前的数组里的每个1中间都相邻若干个0
 * 则可以转换为： 判断在所有1不相邻的情况下，当前数组中的0 可以转换成1 的个数是否大于等于n,如果是，则返回true,否则返回false
 * @param {number[]} flowerbed
 * @param {number} n
 * @return {boolean}
 */
var canPlaceFlowers = function (flowerbed, n) {
    let l = flowerbed.length, count = 0

    for (let i = 0; i < l; i++) {
        const item = flowerbed[i]
        if (count >= n) return true
        if (item) {
            i += 1
        } else {
            if (!flowerbed[i + 1]) {
                count += 1
                i += 1
            }
        }
    }
    return count >= n
};

console.log(canPlaceFlowers([1, 0, 0, 0, 1], 1));
console.log(canPlaceFlowers([1, 0, 0, 0, 0, 0, 1], 2));
